<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <link href="cpip.css" rel="stylesheet" type="text/css" />
    <title>File: /Users/paulross/dev/linux/linux-3.13/include/linux/kobject.h</title>
  </head>
  <body>
    <h1>File: /Users/paulross/dev/linux/linux-3.13/include/linux/kobject.h</h1>
    <p>Green shading in the line number column
means the source is part of the translation unit, red means it is conditionally excluded.
Highlighted line numbers link to the translation unit page. Highlighted macros link to
the macro page.</p>
    <pre><a name="1" /><span class="True">       1:</span> <span class="k">/*</span>
<a name="2" /><span class="True">       2:</span> <span class="k"> * kobject.h - generic kernel object infrastructure.</span>
<a name="3" /><span class="True">       3:</span> <span class="k"> *</span>
<a name="4" /><span class="True">       4:</span> <span class="k"> * Copyright (c) 2002-2003 Patrick Mochel</span>
<a name="5" /><span class="True">       5:</span> <span class="k"> * Copyright (c) 2002-2003 Open Source Development Labs</span>
<a name="6" /><span class="True">       6:</span> <span class="k"> * Copyright (c) 2006-2008 Greg Kroah-Hartman &lt;greg@kroah.com&gt;</span>
<a name="7" /><span class="True">       7:</span> <span class="k"> * Copyright (c) 2006-2008 Novell Inc.</span>
<a name="8" /><span class="True">       8:</span> <span class="k"> *</span>
<a name="9" /><span class="True">       9:</span> <span class="k"> * This file is released under the GPLv2.</span>
<a name="10" /><span class="True">      10:</span> <span class="k"> *</span>
<a name="11" /><span class="True">      11:</span> <span class="k"> * Please read Documentation/kobject.txt before using the kobject</span>
<a name="12" /><span class="True">      12:</span> <span class="k"> * interface, ESPECIALLY the parts about reference counts and object</span>
<a name="13" /><span class="True">      13:</span> <span class="k"> * destructors.</span>
<a name="14" /><span class="True">      14:</span> <span class="k"> */</span>
<a name="15" /><span class="True">      15:</span> 
<a name="16" /><span class="Maybe">      16:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X0tPQkpFQ1RfSF9fMA__"><span class="b">_KOBJECT_H_</span></a>
<a name="17" /><span class="Maybe">      17:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X0tPQkpFQ1RfSF9fMA__"><span class="b">_KOBJECT_H_</span></a>
<a name="18" /><span class="Maybe">      18:</span> 
<a name="19" /><span class="Maybe">      19:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">types</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="20" /><span class="Maybe">      20:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">list</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="21" /><span class="Maybe">      21:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">sysfs</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="22" /><span class="Maybe">      22:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">compiler</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="23" /><span class="Maybe">      23:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">spinlock</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="24" /><span class="Maybe">      24:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">kref</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="25" /><span class="Maybe">      25:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">kobject_ns</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="26" /><span class="Maybe">      26:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">kernel</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="27" /><span class="Maybe">      27:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">wait</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="28" /><span class="Maybe">      28:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">atomic</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="29" /><span class="Maybe">      29:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">workqueue</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="30" /><span class="Maybe">      30:</span> 
<a name="31" /><span class="Maybe">      31:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_VUVWRU5UX0hFTFBFUl9QQVRIX0xFTl8w"><span class="b">UEVENT_HELPER_PATH_LEN</span></a>        <span class="c">256</span>
<a name="32" /><span class="Maybe">      32:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_VUVWRU5UX05VTV9FTlZQXzA_"><span class="b">UEVENT_NUM_ENVP</span></a>            <span class="c">32</span>    <span class="k">/* number of env pointers */</span>
<a name="33" /><span class="Maybe">      33:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_VUVWRU5UX0JVRkZFUl9TSVpFXzA_"><span class="b">UEVENT_BUFFER_SIZE</span></a>        <span class="c">2048</span>    <span class="k">/* buffer for the variables */</span>
<a name="34" /><span class="Maybe">      34:</span> 
<a name="35" /><span class="Maybe">      35:</span> <span class="k">/* path to the userspace helper executed on an event */</span>
<a name="36" /><span class="Maybe">      36:</span> <span class="m">extern</span> <span class="m">char</span> <span class="b">uevent_helper</span><span class="f">[</span><span class="f">]</span><span class="f">;</span>
<a name="37" /><span class="Maybe">      37:</span> 
<a name="38" /><span class="Maybe">      38:</span> <span class="k">/* counter to tag the uevent, read only except for the kobject core */</span>
<a name="39" /><span class="Maybe">      39:</span> <span class="m">extern</span> <span class="b">u64</span> <span class="b">uevent_seqnum</span><span class="f">;</span>
<a name="40" /><span class="Maybe">      40:</span> 
<a name="41" /><span class="Maybe">      41:</span> <span class="k">/*</span>
<a name="42" /><span class="Maybe">      42:</span> <span class="k"> * The actions here must match the index to the string array</span>
<a name="43" /><span class="Maybe">      43:</span> <span class="k"> * in lib/kobject_uevent.c</span>
<a name="44" /><span class="Maybe">      44:</span> <span class="k"> *</span>
<a name="45" /><span class="Maybe">      45:</span> <span class="k"> * Do not add new actions here without checking with the driver-core</span>
<a name="46" /><span class="Maybe">      46:</span> <span class="k"> * maintainers. Action strings are not meant to express subsystem</span>
<a name="47" /><span class="Maybe">      47:</span> <span class="k"> * or device specific properties. In most cases you want to send a</span>
<a name="48" /><span class="Maybe">      48:</span> <span class="k"> * kobject_uevent_env(kobj, KOBJ_CHANGE, env) with additional event</span>
<a name="49" /><span class="Maybe">      49:</span> <span class="k"> * specific variables added to the event environment.</span>
<a name="50" /><span class="Maybe">      50:</span> <span class="k"> */</span>
<a name="51" /><span class="Maybe">      51:</span> <span class="m">enum</span> <span class="b">kobject_action</span> <span class="f">{</span>
<a name="52" /><span class="Maybe">      52:</span>     <span class="b">KOBJ_ADD</span><span class="f">,</span>
<a name="53" /><span class="Maybe">      53:</span>     <span class="b">KOBJ_REMOVE</span><span class="f">,</span>
<a name="54" /><span class="Maybe">      54:</span>     <span class="b">KOBJ_CHANGE</span><span class="f">,</span>
<a name="55" /><span class="Maybe">      55:</span>     <span class="b">KOBJ_MOVE</span><span class="f">,</span>
<a name="56" /><span class="Maybe">      56:</span>     <span class="b">KOBJ_ONLINE</span><span class="f">,</span>
<a name="57" /><span class="Maybe">      57:</span>     <span class="b">KOBJ_OFFLINE</span><span class="f">,</span>
<a name="58" /><span class="Maybe">      58:</span>     <span class="b">KOBJ_MAX</span>
<a name="59" /><span class="Maybe">      59:</span> <span class="f">}</span><span class="f">;</span>
<a name="60" /><span class="Maybe">      60:</span> 
<a name="61" /><span class="Maybe">      61:</span> <span class="m">struct</span> <span class="b">kobject</span> <span class="f">{</span>
<a name="62" /><span class="Maybe">      62:</span>     <span class="m">const</span> <span class="m">char</span>        <span class="f">*</span><span class="b">name</span><span class="f">;</span>
<a name="63" /><span class="Maybe">      63:</span>     <span class="m">struct</span> <span class="b">list_head</span>    <span class="b">entry</span><span class="f">;</span>
<a name="64" /><span class="Maybe">      64:</span>     <span class="m">struct</span> <span class="b">kobject</span>        <span class="f">*</span><span class="b">parent</span><span class="f">;</span>
<a name="65" /><span class="Maybe">      65:</span>     <span class="m">struct</span> <span class="b">kset</span>        <span class="f">*</span><span class="b">kset</span><span class="f">;</span>
<a name="66" /><span class="Maybe">      66:</span>     <span class="m">struct</span> <span class="b">kobj_type</span>    <span class="f">*</span><span class="b">ktype</span><span class="f">;</span>
<a name="67" /><span class="Maybe">      67:</span>     <span class="m">struct</span> <span class="b">sysfs_dirent</span>    <span class="f">*</span><span class="b">sd</span><span class="f">;</span>
<a name="68" /><span class="Maybe">      68:</span>     <span class="m">struct</span> <span class="b">kref</span>        <span class="b">kref</span><span class="f">;</span>
<a name="69" /><span class="False">      69:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">CONFIG_DEBUG_KOBJECT_RELEASE</span>
<a name="70" /><span class="False">      70:</span>     <span class="m">struct</span> <span class="b">delayed_work</span>    <span class="b">release</span><span class="f">;</span>
<a name="71" /><span class="Maybe">      71:</span> <span class="f">#</span><span class="n">endif</span>
<a name="72" /><span class="Maybe">      72:</span>     <span class="m">unsigned</span> <span class="m">int</span> <span class="b">state_initialized</span><span class="f">:</span><span class="c">1</span><span class="f">;</span>
<a name="73" /><span class="Maybe">      73:</span>     <span class="m">unsigned</span> <span class="m">int</span> <span class="b">state_in_sysfs</span><span class="f">:</span><span class="c">1</span><span class="f">;</span>
<a name="74" /><span class="Maybe">      74:</span>     <span class="m">unsigned</span> <span class="m">int</span> <span class="b">state_add_uevent_sent</span><span class="f">:</span><span class="c">1</span><span class="f">;</span>
<a name="75" /><span class="Maybe">      75:</span>     <span class="m">unsigned</span> <span class="m">int</span> <span class="b">state_remove_uevent_sent</span><span class="f">:</span><span class="c">1</span><span class="f">;</span>
<a name="76" /><span class="Maybe">      76:</span>     <span class="m">unsigned</span> <span class="m">int</span> <span class="b">uevent_suppress</span><span class="f">:</span><span class="c">1</span><span class="f">;</span>
<a name="77" /><span class="Maybe">      77:</span> <span class="f">}</span><span class="f">;</span>
<a name="78" /><span class="Maybe">      78:</span> 
<a name="79" /><span class="Maybe">      79:</span> <span class="m">extern</span> <a href="cpu.c_macros_ref.html#_X19wcmludGZfMA__"><span class="b">__printf</span></a><span class="f">(</span><span class="c">2</span><span class="f">,</span> <span class="c">3</span><span class="f">)</span>
<a name="80" /><span class="Maybe">      80:</span> <span class="m">int</span> <span class="b">kobject_set_name</span><span class="f">(</span><span class="m">struct</span> <span class="b">kobject</span> <span class="f">*</span><span class="b">kobj</span><span class="f">,</span> <span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">name</span><span class="f">,</span> <span class="f">...</span><span class="f">)</span><span class="f">;</span>
<a name="81" /><span class="Maybe">      81:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">kobject_set_name_vargs</span><span class="f">(</span><span class="m">struct</span> <span class="b">kobject</span> <span class="f">*</span><span class="b">kobj</span><span class="f">,</span> <span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">fmt</span><span class="f">,</span>
<a name="82" /><span class="Maybe">      82:</span>                   <span class="b">va_list</span> <span class="b">vargs</span><span class="f">)</span><span class="f">;</span>
<a name="83" /><span class="Maybe">      83:</span> 
<a name="84" /><span class="Maybe">      84:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">kobject_name</span><span class="f">(</span><span class="m">const</span> <span class="m">struct</span> <span class="b">kobject</span> <span class="f">*</span><span class="b">kobj</span><span class="f">)</span>
<a name="85" /><span class="Maybe">      85:</span> <span class="f">{</span>
<a name="86" /><span class="Maybe">      86:</span>     <span class="m">return</span> <span class="b">kobj</span><span class="f">-&gt;</span><span class="b">name</span><span class="f">;</span>
<a name="87" /><span class="Maybe">      87:</span> <span class="f">}</span>
<a name="88" /><span class="Maybe">      88:</span> 
<a name="89" /><span class="Maybe">      89:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">kobject_init</span><span class="f">(</span><span class="m">struct</span> <span class="b">kobject</span> <span class="f">*</span><span class="b">kobj</span><span class="f">,</span> <span class="m">struct</span> <span class="b">kobj_type</span> <span class="f">*</span><span class="b">ktype</span><span class="f">)</span><span class="f">;</span>
<a name="90" /><span class="Maybe">      90:</span> <span class="m">extern</span> <a href="cpu.c_macros_ref.html#_X19wcmludGZfMA__"><span class="b">__printf</span></a><span class="f">(</span><span class="c">3</span><span class="f">,</span> <span class="c">4</span><span class="f">)</span> <a href="cpu.c_macros_ref.html#_X19tdXN0X2NoZWNrXzE_"><span class="b">__must_check</span></a>
<a name="91" /><span class="Maybe">      91:</span> <span class="m">int</span> <span class="b">kobject_add</span><span class="f">(</span><span class="m">struct</span> <span class="b">kobject</span> <span class="f">*</span><span class="b">kobj</span><span class="f">,</span> <span class="m">struct</span> <span class="b">kobject</span> <span class="f">*</span><span class="b">parent</span><span class="f">,</span>
<a name="92" /><span class="Maybe">      92:</span>         <span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">fmt</span><span class="f">,</span> <span class="f">...</span><span class="f">)</span><span class="f">;</span>
<a name="93" /><span class="Maybe">      93:</span> <span class="m">extern</span> <a href="cpu.c_macros_ref.html#_X19wcmludGZfMA__"><span class="b">__printf</span></a><span class="f">(</span><span class="c">4</span><span class="f">,</span> <span class="c">5</span><span class="f">)</span> <a href="cpu.c_macros_ref.html#_X19tdXN0X2NoZWNrXzE_"><span class="b">__must_check</span></a>
<a name="94" /><span class="Maybe">      94:</span> <span class="m">int</span> <span class="b">kobject_init_and_add</span><span class="f">(</span><span class="m">struct</span> <span class="b">kobject</span> <span class="f">*</span><span class="b">kobj</span><span class="f">,</span>
<a name="95" /><span class="Maybe">      95:</span>              <span class="m">struct</span> <span class="b">kobj_type</span> <span class="f">*</span><span class="b">ktype</span><span class="f">,</span> <span class="m">struct</span> <span class="b">kobject</span> <span class="f">*</span><span class="b">parent</span><span class="f">,</span>
<a name="96" /><span class="Maybe">      96:</span>              <span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">fmt</span><span class="f">,</span> <span class="f">...</span><span class="f">)</span><span class="f">;</span>
<a name="97" /><span class="Maybe">      97:</span> 
<a name="98" /><span class="Maybe">      98:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">kobject_del</span><span class="f">(</span><span class="m">struct</span> <span class="b">kobject</span> <span class="f">*</span><span class="b">kobj</span><span class="f">)</span><span class="f">;</span>
<a name="99" /><span class="Maybe">      99:</span> 
<a name="100" /><span class="Maybe">     100:</span> <span class="m">extern</span> <span class="m">struct</span> <span class="b">kobject</span> <span class="f">*</span> <a href="cpu.c_macros_ref.html#_X19tdXN0X2NoZWNrXzE_"><span class="b">__must_check</span></a> <span class="b">kobject_create</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="101" /><span class="Maybe">     101:</span> <span class="m">extern</span> <span class="m">struct</span> <span class="b">kobject</span> <span class="f">*</span> <a href="cpu.c_macros_ref.html#_X19tdXN0X2NoZWNrXzE_"><span class="b">__must_check</span></a> <span class="b">kobject_create_and_add</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">name</span><span class="f">,</span>
<a name="102" /><span class="Maybe">     102:</span>                         <span class="m">struct</span> <span class="b">kobject</span> <span class="f">*</span><span class="b">parent</span><span class="f">)</span><span class="f">;</span>
<a name="103" /><span class="Maybe">     103:</span> 
<a name="104" /><span class="Maybe">     104:</span> <span class="m">extern</span> <span class="m">int</span> <a href="cpu.c_macros_ref.html#_X19tdXN0X2NoZWNrXzE_"><span class="b">__must_check</span></a> <span class="b">kobject_rename</span><span class="f">(</span><span class="m">struct</span> <span class="b">kobject</span> <span class="f">*</span><span class="f">,</span> <span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">new_name</span><span class="f">)</span><span class="f">;</span>
<a name="105" /><span class="Maybe">     105:</span> <span class="m">extern</span> <span class="m">int</span> <a href="cpu.c_macros_ref.html#_X19tdXN0X2NoZWNrXzE_"><span class="b">__must_check</span></a> <span class="b">kobject_move</span><span class="f">(</span><span class="m">struct</span> <span class="b">kobject</span> <span class="f">*</span><span class="f">,</span> <span class="m">struct</span> <span class="b">kobject</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="106" /><span class="Maybe">     106:</span> 
<a name="107" /><span class="Maybe">     107:</span> <span class="m">extern</span> <span class="m">struct</span> <span class="b">kobject</span> <span class="f">*</span><span class="b">kobject_get</span><span class="f">(</span><span class="m">struct</span> <span class="b">kobject</span> <span class="f">*</span><span class="b">kobj</span><span class="f">)</span><span class="f">;</span>
<a name="108" /><span class="Maybe">     108:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">kobject_put</span><span class="f">(</span><span class="m">struct</span> <span class="b">kobject</span> <span class="f">*</span><span class="b">kobj</span><span class="f">)</span><span class="f">;</span>
<a name="109" /><span class="Maybe">     109:</span> 
<a name="110" /><span class="Maybe">     110:</span> <span class="m">extern</span> <span class="m">const</span> <span class="m">void</span> <span class="f">*</span><span class="b">kobject_namespace</span><span class="f">(</span><span class="m">struct</span> <span class="b">kobject</span> <span class="f">*</span><span class="b">kobj</span><span class="f">)</span><span class="f">;</span>
<a name="111" /><span class="Maybe">     111:</span> <span class="m">extern</span> <span class="m">char</span> <span class="f">*</span><span class="b">kobject_get_path</span><span class="f">(</span><span class="m">struct</span> <span class="b">kobject</span> <span class="f">*</span><span class="b">kobj</span><span class="f">,</span> <span class="b">gfp_t</span> <span class="b">flag</span><span class="f">)</span><span class="f">;</span>
<a name="112" /><span class="Maybe">     112:</span> 
<a name="113" /><span class="Maybe">     113:</span> <span class="m">struct</span> <span class="b">kobj_type</span> <span class="f">{</span>
<a name="114" /><span class="Maybe">     114:</span>     <span class="m">void</span> <span class="f">(</span><span class="f">*</span><span class="b">release</span><span class="f">)</span><span class="f">(</span><span class="m">struct</span> <span class="b">kobject</span> <span class="f">*</span><span class="b">kobj</span><span class="f">)</span><span class="f">;</span>
<a name="115" /><span class="Maybe">     115:</span>     <span class="m">const</span> <span class="m">struct</span> <span class="b">sysfs_ops</span> <span class="f">*</span><span class="b">sysfs_ops</span><span class="f">;</span>
<a name="116" /><span class="Maybe">     116:</span>     <span class="m">struct</span> <span class="b">attribute</span> <span class="f">*</span><span class="f">*</span><span class="b">default_attrs</span><span class="f">;</span>
<a name="117" /><span class="Maybe">     117:</span>     <span class="m">const</span> <span class="m">struct</span> <span class="b">kobj_ns_type_operations</span> <span class="f">*</span><span class="f">(</span><span class="f">*</span><span class="b">child_ns_type</span><span class="f">)</span><span class="f">(</span><span class="m">struct</span> <span class="b">kobject</span> <span class="f">*</span><span class="b">kobj</span><span class="f">)</span><span class="f">;</span>
<a name="118" /><span class="Maybe">     118:</span>     <span class="m">const</span> <span class="m">void</span> <span class="f">*</span><span class="f">(</span><span class="f">*</span><span class="m">namespace</span><span class="f">)</span><span class="f">(</span><span class="m">struct</span> <span class="b">kobject</span> <span class="f">*</span><span class="b">kobj</span><span class="f">)</span><span class="f">;</span>
<a name="119" /><span class="Maybe">     119:</span> <span class="f">}</span><span class="f">;</span>
<a name="120" /><span class="Maybe">     120:</span> 
<a name="121" /><span class="Maybe">     121:</span> <span class="m">struct</span> <span class="b">kobj_uevent_env</span> <span class="f">{</span>
<a name="122" /><span class="Maybe">     122:</span>     <span class="m">char</span> <span class="f">*</span><span class="b">envp</span><span class="f">[</span><a href="cpu.c_macros_ref.html#_VUVWRU5UX05VTV9FTlZQXzA_"><span class="b">UEVENT_NUM_ENVP</span></a><span class="f">]</span><span class="f">;</span>
<a name="123" /><span class="Maybe">     123:</span>     <span class="m">int</span> <span class="b">envp_idx</span><span class="f">;</span>
<a name="124" /><span class="Maybe">     124:</span>     <span class="m">char</span> <span class="b">buf</span><span class="f">[</span><a href="cpu.c_macros_ref.html#_VUVWRU5UX0JVRkZFUl9TSVpFXzA_"><span class="b">UEVENT_BUFFER_SIZE</span></a><span class="f">]</span><span class="f">;</span>
<a name="125" /><span class="Maybe">     125:</span>     <span class="m">int</span> <span class="b">buflen</span><span class="f">;</span>
<a name="126" /><span class="Maybe">     126:</span> <span class="f">}</span><span class="f">;</span>
<a name="127" /><span class="Maybe">     127:</span> 
<a name="128" /><span class="Maybe">     128:</span> <span class="m">struct</span> <span class="b">kset_uevent_ops</span> <span class="f">{</span>
<a name="129" /><span class="Maybe">     129:</span>     <span class="m">int</span> <span class="f">(</span><span class="f">*</span> <span class="m">const</span> <span class="b">filter</span><span class="f">)</span><span class="f">(</span><span class="m">struct</span> <span class="b">kset</span> <span class="f">*</span><span class="b">kset</span><span class="f">,</span> <span class="m">struct</span> <span class="b">kobject</span> <span class="f">*</span><span class="b">kobj</span><span class="f">)</span><span class="f">;</span>
<a name="130" /><span class="Maybe">     130:</span>     <span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="f">(</span><span class="f">*</span> <span class="m">const</span> <span class="b">name</span><span class="f">)</span><span class="f">(</span><span class="m">struct</span> <span class="b">kset</span> <span class="f">*</span><span class="b">kset</span><span class="f">,</span> <span class="m">struct</span> <span class="b">kobject</span> <span class="f">*</span><span class="b">kobj</span><span class="f">)</span><span class="f">;</span>
<a name="131" /><span class="Maybe">     131:</span>     <span class="m">int</span> <span class="f">(</span><span class="f">*</span> <span class="m">const</span> <span class="b">uevent</span><span class="f">)</span><span class="f">(</span><span class="m">struct</span> <span class="b">kset</span> <span class="f">*</span><span class="b">kset</span><span class="f">,</span> <span class="m">struct</span> <span class="b">kobject</span> <span class="f">*</span><span class="b">kobj</span><span class="f">,</span>
<a name="132" /><span class="Maybe">     132:</span>               <span class="m">struct</span> <span class="b">kobj_uevent_env</span> <span class="f">*</span><span class="b">env</span><span class="f">)</span><span class="f">;</span>
<a name="133" /><span class="Maybe">     133:</span> <span class="f">}</span><span class="f">;</span>
<a name="134" /><span class="Maybe">     134:</span> 
<a name="135" /><span class="Maybe">     135:</span> <span class="m">struct</span> <span class="b">kobj_attribute</span> <span class="f">{</span>
<a name="136" /><span class="Maybe">     136:</span>     <span class="m">struct</span> <span class="b">attribute</span> <span class="b">attr</span><span class="f">;</span>
<a name="137" /><span class="Maybe">     137:</span>     <span class="b">ssize_t</span> <span class="f">(</span><span class="f">*</span><span class="b">show</span><span class="f">)</span><span class="f">(</span><span class="m">struct</span> <span class="b">kobject</span> <span class="f">*</span><span class="b">kobj</span><span class="f">,</span> <span class="m">struct</span> <span class="b">kobj_attribute</span> <span class="f">*</span><span class="b">attr</span><span class="f">,</span>
<a name="138" /><span class="Maybe">     138:</span>             <span class="m">char</span> <span class="f">*</span><span class="b">buf</span><span class="f">)</span><span class="f">;</span>
<a name="139" /><span class="Maybe">     139:</span>     <span class="b">ssize_t</span> <span class="f">(</span><span class="f">*</span><span class="b">store</span><span class="f">)</span><span class="f">(</span><span class="m">struct</span> <span class="b">kobject</span> <span class="f">*</span><span class="b">kobj</span><span class="f">,</span> <span class="m">struct</span> <span class="b">kobj_attribute</span> <span class="f">*</span><span class="b">attr</span><span class="f">,</span>
<a name="140" /><span class="Maybe">     140:</span>              <span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">buf</span><span class="f">,</span> <span class="b">size_t</span> <span class="b">count</span><span class="f">)</span><span class="f">;</span>
<a name="141" /><span class="Maybe">     141:</span> <span class="f">}</span><span class="f">;</span>
<a name="142" /><span class="Maybe">     142:</span> 
<a name="143" /><span class="Maybe">     143:</span> <span class="m">extern</span> <span class="m">const</span> <span class="m">struct</span> <span class="b">sysfs_ops</span> <span class="b">kobj_sysfs_ops</span><span class="f">;</span>
<a name="144" /><span class="Maybe">     144:</span> 
<a name="145" /><span class="Maybe">     145:</span> <span class="m">struct</span> <span class="b">sock</span><span class="f">;</span>
<a name="146" /><span class="Maybe">     146:</span> 
<a name="147" /><span class="Maybe">     147:</span> <span class="k">/**</span>
<a name="148" /><span class="Maybe">     148:</span> <span class="k"> * struct kset - a set of kobjects of a specific type, belonging to a specific subsystem.</span>
<a name="149" /><span class="Maybe">     149:</span> <span class="k"> *</span>
<a name="150" /><span class="Maybe">     150:</span> <span class="k"> * A kset defines a group of kobjects.  They can be individually</span>
<a name="151" /><span class="Maybe">     151:</span> <span class="k"> * different &quot;types&quot; but overall these kobjects all want to be grouped</span>
<a name="152" /><span class="Maybe">     152:</span> <span class="k"> * together and operated on in the same manner.  ksets are used to</span>
<a name="153" /><span class="Maybe">     153:</span> <span class="k"> * define the attribute callbacks and other common events that happen to</span>
<a name="154" /><span class="Maybe">     154:</span> <span class="k"> * a kobject.</span>
<a name="155" /><span class="Maybe">     155:</span> <span class="k"> *</span>
<a name="156" /><span class="Maybe">     156:</span> <span class="k"> * @list: the list of all kobjects for this kset</span>
<a name="157" /><span class="Maybe">     157:</span> <span class="k"> * @list_lock: a lock for iterating over the kobjects</span>
<a name="158" /><span class="Maybe">     158:</span> <span class="k"> * @kobj: the embedded kobject for this kset (recursion, isn&apos;t it fun...)</span>
<a name="159" /><span class="Maybe">     159:</span> <span class="k"> * @uevent_ops: the set of uevent operations for this kset.  These are</span>
<a name="160" /><span class="Maybe">     160:</span> <span class="k"> * called whenever a kobject has something happen to it so that the kset</span>
<a name="161" /><span class="Maybe">     161:</span> <span class="k"> * can add new environment variables, or filter out the uevents if so</span>
<a name="162" /><span class="Maybe">     162:</span> <span class="k"> * desired.</span>
<a name="163" /><span class="Maybe">     163:</span> <span class="k"> */</span>
<a name="164" /><span class="Maybe">     164:</span> <span class="m">struct</span> <span class="b">kset</span> <span class="f">{</span>
<a name="165" /><span class="Maybe">     165:</span>     <span class="m">struct</span> <span class="b">list_head</span> <span class="b">list</span><span class="f">;</span>
<a name="166" /><span class="Maybe">     166:</span>     <span class="b">spinlock_t</span> <span class="b">list_lock</span><span class="f">;</span>
<a name="167" /><span class="Maybe">     167:</span>     <span class="m">struct</span> <span class="b">kobject</span> <span class="b">kobj</span><span class="f">;</span>
<a name="168" /><span class="Maybe">     168:</span>     <span class="m">const</span> <span class="m">struct</span> <span class="b">kset_uevent_ops</span> <span class="f">*</span><span class="b">uevent_ops</span><span class="f">;</span>
<a name="169" /><span class="Maybe">     169:</span> <span class="f">}</span><span class="f">;</span>
<a name="170" /><span class="Maybe">     170:</span> 
<a name="171" /><span class="Maybe">     171:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">kset_init</span><span class="f">(</span><span class="m">struct</span> <span class="b">kset</span> <span class="f">*</span><span class="b">kset</span><span class="f">)</span><span class="f">;</span>
<a name="172" /><span class="Maybe">     172:</span> <span class="m">extern</span> <span class="m">int</span> <a href="cpu.c_macros_ref.html#_X19tdXN0X2NoZWNrXzE_"><span class="b">__must_check</span></a> <span class="b">kset_register</span><span class="f">(</span><span class="m">struct</span> <span class="b">kset</span> <span class="f">*</span><span class="b">kset</span><span class="f">)</span><span class="f">;</span>
<a name="173" /><span class="Maybe">     173:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">kset_unregister</span><span class="f">(</span><span class="m">struct</span> <span class="b">kset</span> <span class="f">*</span><span class="b">kset</span><span class="f">)</span><span class="f">;</span>
<a name="174" /><span class="Maybe">     174:</span> <span class="m">extern</span> <span class="m">struct</span> <span class="b">kset</span> <span class="f">*</span> <a href="cpu.c_macros_ref.html#_X19tdXN0X2NoZWNrXzE_"><span class="b">__must_check</span></a> <span class="b">kset_create_and_add</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">name</span><span class="f">,</span>
<a name="175" /><span class="Maybe">     175:</span>                         <span class="m">const</span> <span class="m">struct</span> <span class="b">kset_uevent_ops</span> <span class="f">*</span><span class="b">u</span><span class="f">,</span>
<a name="176" /><span class="Maybe">     176:</span>                         <span class="m">struct</span> <span class="b">kobject</span> <span class="f">*</span><span class="b">parent_kobj</span><span class="f">)</span><span class="f">;</span>
<a name="177" /><span class="Maybe">     177:</span> 
<a name="178" /><span class="Maybe">     178:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">struct</span> <span class="b">kset</span> <span class="f">*</span><span class="b">to_kset</span><span class="f">(</span><span class="m">struct</span> <span class="b">kobject</span> <span class="f">*</span><span class="b">kobj</span><span class="f">)</span>
<a name="179" /><span class="Maybe">     179:</span> <span class="f">{</span>
<a name="180" /><span class="Maybe">     180:</span>     <span class="m">return</span> <span class="b">kobj</span> <span class="f">?</span> <a href="cpu.c_macros_ref.html#_Y29udGFpbmVyX29mXzA_"><span class="b">container_of</span></a><span class="f">(</span><span class="b">kobj</span><span class="f">,</span> <span class="m">struct</span> <span class="b">kset</span><span class="f">,</span> <span class="b">kobj</span><span class="f">)</span> <span class="f">:</span> <a href="cpu.c_macros_ref.html#_TlVMTF8w"><span class="b">NULL</span></a><span class="f">;</span>
<a name="181" /><span class="Maybe">     181:</span> <span class="f">}</span>
<a name="182" /><span class="Maybe">     182:</span> 
<a name="183" /><span class="Maybe">     183:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">struct</span> <span class="b">kset</span> <span class="f">*</span><span class="b">kset_get</span><span class="f">(</span><span class="m">struct</span> <span class="b">kset</span> <span class="f">*</span><span class="b">k</span><span class="f">)</span>
<a name="184" /><span class="Maybe">     184:</span> <span class="f">{</span>
<a name="185" /><span class="Maybe">     185:</span>     <span class="m">return</span> <span class="b">k</span> <span class="f">?</span> <span class="b">to_kset</span><span class="f">(</span><span class="b">kobject_get</span><span class="f">(</span><span class="f">&amp;</span><span class="b">k</span><span class="f">-&gt;</span><span class="b">kobj</span><span class="f">)</span><span class="f">)</span> <span class="f">:</span> <a href="cpu.c_macros_ref.html#_TlVMTF8w"><span class="b">NULL</span></a><span class="f">;</span>
<a name="186" /><span class="Maybe">     186:</span> <span class="f">}</span>
<a name="187" /><span class="Maybe">     187:</span> 
<a name="188" /><span class="Maybe">     188:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">kset_put</span><span class="f">(</span><span class="m">struct</span> <span class="b">kset</span> <span class="f">*</span><span class="b">k</span><span class="f">)</span>
<a name="189" /><span class="Maybe">     189:</span> <span class="f">{</span>
<a name="190" /><span class="Maybe">     190:</span>     <span class="b">kobject_put</span><span class="f">(</span><span class="f">&amp;</span><span class="b">k</span><span class="f">-&gt;</span><span class="b">kobj</span><span class="f">)</span><span class="f">;</span>
<a name="191" /><span class="Maybe">     191:</span> <span class="f">}</span>
<a name="192" /><span class="Maybe">     192:</span> 
<a name="193" /><span class="Maybe">     193:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">struct</span> <span class="b">kobj_type</span> <span class="f">*</span><span class="b">get_ktype</span><span class="f">(</span><span class="m">struct</span> <span class="b">kobject</span> <span class="f">*</span><span class="b">kobj</span><span class="f">)</span>
<a name="194" /><span class="Maybe">     194:</span> <span class="f">{</span>
<a name="195" /><span class="Maybe">     195:</span>     <span class="m">return</span> <span class="b">kobj</span><span class="f">-&gt;</span><span class="b">ktype</span><span class="f">;</span>
<a name="196" /><span class="Maybe">     196:</span> <span class="f">}</span>
<a name="197" /><span class="Maybe">     197:</span> 
<a name="198" /><span class="Maybe">     198:</span> <span class="m">extern</span> <span class="m">struct</span> <span class="b">kobject</span> <span class="f">*</span><span class="b">kset_find_obj</span><span class="f">(</span><span class="m">struct</span> <span class="b">kset</span> <span class="f">*</span><span class="f">,</span> <span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="199" /><span class="Maybe">     199:</span> 
<a name="200" /><span class="Maybe">     200:</span> <span class="k">/* The global /sys/kernel/ kobject for people to chain off of */</span>
<a name="201" /><span class="Maybe">     201:</span> <span class="m">extern</span> <span class="m">struct</span> <span class="b">kobject</span> <span class="f">*</span><span class="b">kernel_kobj</span><span class="f">;</span>
<a name="202" /><span class="Maybe">     202:</span> <span class="k">/* The global /sys/kernel/mm/ kobject for people to chain off of */</span>
<a name="203" /><span class="Maybe">     203:</span> <span class="m">extern</span> <span class="m">struct</span> <span class="b">kobject</span> <span class="f">*</span><span class="b">mm_kobj</span><span class="f">;</span>
<a name="204" /><span class="Maybe">     204:</span> <span class="k">/* The global /sys/hypervisor/ kobject for people to chain off of */</span>
<a name="205" /><span class="Maybe">     205:</span> <span class="m">extern</span> <span class="m">struct</span> <span class="b">kobject</span> <span class="f">*</span><span class="b">hypervisor_kobj</span><span class="f">;</span>
<a name="206" /><span class="Maybe">     206:</span> <span class="k">/* The global /sys/power/ kobject for people to chain off of */</span>
<a name="207" /><span class="Maybe">     207:</span> <span class="m">extern</span> <span class="m">struct</span> <span class="b">kobject</span> <span class="f">*</span><span class="b">power_kobj</span><span class="f">;</span>
<a name="208" /><span class="Maybe">     208:</span> <span class="k">/* The global /sys/firmware/ kobject for people to chain off of */</span>
<a name="209" /><span class="Maybe">     209:</span> <span class="m">extern</span> <span class="m">struct</span> <span class="b">kobject</span> <span class="f">*</span><span class="b">firmware_kobj</span><span class="f">;</span>
<a name="210" /><span class="Maybe">     210:</span> 
<a name="211" /><span class="Maybe">     211:</span> <span class="m">int</span> <span class="b">kobject_uevent</span><span class="f">(</span><span class="m">struct</span> <span class="b">kobject</span> <span class="f">*</span><span class="b">kobj</span><span class="f">,</span> <span class="m">enum</span> <span class="b">kobject_action</span> <span class="b">action</span><span class="f">)</span><span class="f">;</span>
<a name="212" /><span class="Maybe">     212:</span> <span class="m">int</span> <span class="b">kobject_uevent_env</span><span class="f">(</span><span class="m">struct</span> <span class="b">kobject</span> <span class="f">*</span><span class="b">kobj</span><span class="f">,</span> <span class="m">enum</span> <span class="b">kobject_action</span> <span class="b">action</span><span class="f">,</span>
<a name="213" /><span class="Maybe">     213:</span>             <span class="m">char</span> <span class="f">*</span><span class="b">envp</span><span class="f">[</span><span class="f">]</span><span class="f">)</span><span class="f">;</span>
<a name="214" /><span class="Maybe">     214:</span> 
<a name="215" /><span class="Maybe">     215:</span> <a href="cpu.c_macros_ref.html#_X19wcmludGZfMA__"><span class="b">__printf</span></a><span class="f">(</span><span class="c">2</span><span class="f">,</span> <span class="c">3</span><span class="f">)</span>
<a name="216" /><span class="Maybe">     216:</span> <span class="m">int</span> <span class="b">add_uevent_var</span><span class="f">(</span><span class="m">struct</span> <span class="b">kobj_uevent_env</span> <span class="f">*</span><span class="b">env</span><span class="f">,</span> <span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">format</span><span class="f">,</span> <span class="f">...</span><span class="f">)</span><span class="f">;</span>
<a name="217" /><span class="Maybe">     217:</span> 
<a name="218" /><span class="Maybe">     218:</span> <span class="m">int</span> <span class="b">kobject_action_type</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">buf</span><span class="f">,</span> <span class="b">size_t</span> <span class="b">count</span><span class="f">,</span>
<a name="219" /><span class="Maybe">     219:</span>             <span class="m">enum</span> <span class="b">kobject_action</span> <span class="f">*</span><span class="b">type</span><span class="f">)</span><span class="f">;</span>
<a name="220" /><span class="Maybe">     220:</span> 
<a name="221" /><span class="True">     221:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* _KOBJECT_H_ */</span>
<a name="222" /><span class="True">     222:</span> </pre>
  </body>
</html>
